/**
* @project admin-go-api
* @name sysPost
* @descriptions 岗位控制层
* @author 寒锋
* @date 2023-12-15 15:14:33
 */

package controller

import (
	"admin-go-api/api/entity"
	"admin-go-api/api/service"
	"admin-go-api/common/response"
	"admin-go-api/constants"
	"fmt"
	"github.com/gin-gonic/gin"
	"strconv"
)

var sysPost = entity.SysPost{}

// GetSysPostList 分页查询岗位列表
// @Summary 分页查询岗位列表
// @Produce json
// @Description 分页查询岗位列表
// @Security ApiKeyAuth
// @Param pageNum query int false "分页数"
// @Param pageSize query int false "每页数"
// @Param postName query string false "岗位名称"
// @param postCode query string false "岗位编码"
// @Param postStatus query int false "状态：1->启用,2->禁用"
// @Param beginTime query string false "开始时间"
// @Param endTime query string false "结束时间"
// @Success 200 {object} response.Result
// @router /api/sysPost/index [get]
func GetSysPostList(c *gin.Context) {
	PageNum, _ := strconv.Atoi(c.Query("pageNum"))
	PageSize, _ := strconv.Atoi(c.Query("pageSize"))
	PostName := c.Query("postName")
	PostCode := c.Query("postCode")
	PostStatus, _ := strconv.Atoi(c.Query("postStatus"))
	BeginTime := c.Query("beginTime")
	EndTime := c.Query("endTime")
	service.SysPostService().GetSysPostList(c, PageNum, PageSize, PostName, PostCode, PostStatus, BeginTime, EndTime)
}

// QuerySysPostVoList 岗位下拉列表
// @Summary 岗位下拉列表
// @Produce json
// @Description 岗位下拉列表
// @Security ApiKeyAuth
// @Success 200 {object} response.Result
// @router /api/sysPost/vo/list [get]
func QuerySysPostVoList(c *gin.Context) {
	service.SysPostService().QuerySysPostVoList(c)
}

// CreateSysPost
// @Summary 添加岗位
// @Produce json
// @Description 添加岗位
// @Security ApiKeyAuth
// @Param data body entity.CreateSysPostDto true "data"
// @Success 200 {object} response.Result
// @Router /api/sysPost/store [post]
func CreateSysPost(c *gin.Context) {
	var sysPost entity.CreateSysPostDto
	err := c.ShouldBind(&sysPost)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysPostService().CreateSysPost(c, sysPost)
}

// GetSysPostById 根据id查询岗位
// @Summary 根据id查询岗位
// @Produce json
// @Description 根据id查询岗位
// @Security ApiKeyAuth
// @Param id query int true "ID"
// @Success 200 {object} response.Result
// @router /api/sysPost/show [get]
func GetSysPostById(c *gin.Context) {
	id, _ := strconv.Atoi(c.Query("id"))
	service.SysPostService().GetSysPostById(c, id)
}

// UpdateSysPost 修改岗位
// @Summary 修改岗位接口
// @Produce json
// @Description 修改岗位接口
// @Security ApiKeyAuth
// @Param data body entity.SysPost true "data"
// @Success 200 {object} response.Result
// @router /api/sysPost/update [put]
func UpdateSysPost(c *gin.Context) {
	err := c.ShouldBind(&sysPost)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysPostService().UpdateSysPost(c, sysPost)
}

// UpdateSysPostStatus 岗位状态修改
// @Summary 岗位状态修改接口
// @Produce json
// @Description 岗位状态修改接口
// @Security ApiKeyAuth
// @Param data body entity.UpdateSysPostStatusDto true "data"
// @Success 200 {object} response.Result
// @router /api/sysPost/state [put]
func UpdateSysPostStatus(c *gin.Context) {
	var dto entity.UpdateSysPostStatusDto
	err := c.ShouldBind(&dto)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysPostService().UpdateSysPostStatus(c, dto)
}

// DeleteSysPostById 根据id删除岗位
// @Summary 根据id删除岗位接口
// @Produce json
// @Description 根据id删除岗位接口
// @Security ApiKeyAuth
// @Param data body entity.SysPostIdDto true "data"
// @Success 200 {object} response.Result
// @router /api/sysPost/destroy [delete]
func DeleteSysPostById(c *gin.Context) {
	var dto entity.SysPostIdDto
	err := c.ShouldBind(&dto)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysPostService().DeleteSysPostById(c, dto)
}

// BatchDeleteSysPost 批量删除岗位
// @Summary 批量删除岗位接口
// @Produce json
// @Description 批量删除岗位接口
// @Security ApiKeyAuth
// @Param data body entity.DelSysPostDto true "data"
// @Success 200 {object} response.Result
// @router /api/sysPost/batch/destroy [delete]
func BatchDeleteSysPost(c *gin.Context) {
	var dto entity.DelSysPostDto
	err := c.ShouldBind(&dto)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	fmt.Println(&dto)
	service.SysPostService().BatchDeleteSysPost(c, dto)
}
